home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / netz / ums / ums-beta / developer / m2 / umsd.def next >
Text File  |  1995-04-26  |  25KB  |  595 lines

  1. (* --------------------------------------------------------------------------
  2.   :Program.       ums
  3.   :Contents.      Interfaces for ums.library
  4.   :Author.        Martin Koyro [mk]
  5.   :Address.       SnailMail:                EMail:
  6.   :Address.       Salzmannstr. 12           MAUS: MS3
  7.   :Address.       48147 Muenster            INET: mk@ms3.maus.westfalen.de
  8.   :Address.       GERMANY
  9.   :Author.        Martin Loos [ml]
  10.   :Address.       SnailMail:                EMail:
  11.   :Address.       Im Scheidt 25             MAUS: UN
  12.   :Address.       58640 Iserlohn-Kalthof    INET: mattin@unicorn.sauerland.de
  13.   :Address.       GERMANY                   FIDO: 2:243/4504.2 (GCC)
  14.   :Author.        Kai Bolay [kb]
  15.   :Address.       SnailMail:                EMail:
  16.   :Address.       Hoffmannstraße 168        FIDO: 2:246/1216.3
  17.   :Address.       71229 Leonberg            UUCP: kai@amokle.stgt.sub.org
  18.   :Author.        Martin Horneffer [mh]
  19.   :Address.       MAUS:   AC2
  20.   :Address.       FIDO:   2:242/7.9 (Classic)
  21.   :Address.       USENET: mh@umshq.dfv.rwth.aachen.de
  22.   :Address.       ADSP:   mh@umshq.adsp.sub.org
  23.   :Author.        Olaf Peters [olf]         EMail:
  24.   :Address.       Kulmer Str. 7             MAUS: HB2
  25.   :Address.       28237 Bremen              INET: op@hb2.maus.de
  26.   :Address.       GERMANY                   INET: olf@informatik.uni-bremen.de
  27.   :History.       [ml] 19-Jan-93: Conversion from Oberon to Modula-2
  28.   :History.       [kb] 28-Mar-93: New Consts added
  29.   :History.       [ml] 20-May-93: New Consts and Tags added
  30.   :History.       [mh]  2-Jun-93: changed and added some Consts
  31.   :History.       [mh] 29-Jun-93: added some Consts
  32.   :History.       [mh] 26-Aug-93: added tagHide
  33.   :History.       [mk] 24-Okt-93: Setstructure revised
  34.   :History.       [mk] 24-Apr-94: Changes for UMSLib V11
  35.   :History.       [mh] 28-Apr-94: tagCfgLockVar, tagCfgUnlockVar
  36.   :History.       [mk] 14-May-94: a few bugs removed
  37.   :History.       [mk] 17-May-94: changed Error to LONGINT
  38.   :History.       [olf] 01-Sep-94: added new tags for server v11.6
  39.   :History.       [olf] 17-Oct-94: added the global 'Parked' flag
  40.   :History.       [olf] 07-Nov-94: added new, netspecific attribute tags
  41.   :History.       [olf] 25-Feb-95: selCDate & selSize tags, HasFile flag
  42.   :History.       [olf] 27-Mar-95: noHardlinks
  43.   :History.       [olf] 26-Apr-95: SelMaxCount und SelMaxSize (thx [mk])
  44.   :Language.      Modula II
  45.   :Translator.    M2Amiga v4.301
  46.   :Version.       $VER: UMSM2Interfaces 11.14a (27.3.95)
  47. -------------------------------------------------------------------------- *)
  48.  
  49. DEFINITION MODULE UmsD;
  50. (*$ Implementation:=FALSE LargeVars:=FALSE *)
  51.  
  52.  
  53. IMPORT u:UtilityD,s:SYSTEM;
  54.  
  55. TYPE
  56.     (* user status-bits *)
  57.  
  58.     UserStatusFlags      = (us0,us1,us2,us3,
  59.       archive,      (* msg should be archived, don't delete *)
  60.       junk,         (* negative selection, inheritance suggested *)
  61.       postPoned,    (* to be read again, (but not now) *)
  62.       selected,     (* positive selection, inheritance suggested *)
  63.       Old,          (* user has already read this Message *)
  64.       WriteAccess,  (* user may change or delete this message *)
  65.       ReadAccess,   (* user may read this message *)
  66.       ViewAccess,   (* user may read the header of this message *)
  67.       Owner,        (* user 'owns' (wrote) this message *)
  68.       us13,us14,
  69.       filtered,     (* msg has been processed by filter,
  70.                        'selected' and 'junk' have been properly set *)
  71.       us16,us17,us18,us19,us20,us21,us22,us23,
  72.       us24,us25,us26,us27,us28,us29,us30,us31);
  73.  
  74.     UserStatusFlagSet    = SET OF UserStatusFlags;
  75.  
  76.  
  77.     (* global status-bits *)
  78.  
  79.     GlobalStatusFlags    = (
  80.       Deleted,      (* msg is really deleted *)
  81.       Expired,      (* msg has expired and may be deleted *)
  82.       Exported,     (* msg has been exported *)
  83.       Orphan,       (* msg could not be exported *)
  84.       Link,         (* within a ring of linked msgs *)
  85.       HardLink,     (* link is hardLink *)
  86.       Parked,       (* msg is "parked", i.e. must not (yet) be exported *)
  87.       HasFile,      (* msg has an attached file (tempFilename) *)
  88.  
  89.  
  90.       gs8,gs9,gs10,gs11,gs12,gs13,gs14,gs15,gs16,gs17,gs18,gs19,
  91.       gs20,gs21,gs22,gs23,gs24,gs25,gs26,gs27,gs28,gs29,gs30,gs31);
  92.  
  93.     GlobalStatusFlagSet  = SET OF GlobalStatusFlags;
  94.  
  95.  
  96.  
  97. CONST
  98.     umsName               = "ums.library";
  99.     NumFields             = 128;
  100.  
  101.     (* actions for ServerControl() *)
  102.  
  103.     CleanUp               = 1;
  104.     Flush                 = 2;
  105.     Quit                  = 3;
  106.     QuitForce             = 4;
  107.     Ping                  = 5;
  108.     LockCfg               = 6;
  109.     UnlockCfg             = 7;
  110.  
  111.     ProtectedUserFlags    = UserStatusFlagSet{WriteAccess,ReadAccess,
  112.                                               ViewAccess,Owner};
  113.     ProtectedGlobalFlags  = GlobalStatusFlagSet{Deleted,Exported,Orphan,
  114.                                                 Link,HardLink,HasFile};
  115.     Read                  = UserStatusFlagSet{Old};
  116.  
  117.  
  118.  
  119. TYPE
  120.     Account         = LONGINT;
  121.     MsgNum          = LONGINT;
  122.     Error           = LONGINT;
  123.     STRPTR          = POINTER TO ARRAY[0..MAX(LONGINT) - 1] OF CHAR;
  124.  
  125.     MsgTextFields   = ARRAY[0..NumFields - 1] OF STRPTR;
  126.     MessageInfo     = RECORD
  127.                         hdrLen      : LONGINT;
  128.                         txtLen      : LONGINT;
  129.                         date        : LONGINT;
  130.                         up, dn,
  131.                         lt, rt      : MsgNum;
  132.                         globalStat  : GlobalStatusFlagSet;
  133.                         userStat    : UserStatusFlagSet;
  134.                         loginStat   : s.LONGSET;
  135.                         hardLink    : MsgNum;
  136.                         softLink    : MsgNum;
  137.  
  138.                         (* V11 extension, only filled by tagRExtMsgInfo *)
  139.                         cDate       : LONGINT;
  140.                         reserved    : ARRAY[0..2] OF LONGINT;
  141.                    END; (*of RECORD*)
  142.  
  143.  
  144. CONST
  145.  
  146.    (* enumeration of fields in an UMS-message *)
  147.  
  148.    msgText                   =   0;
  149.    fromName                  =   1;
  150.    fromAddr                  =   2;
  151.    toName                    =   3;
  152.    toAddr                    =   4;
  153.    msgID                     =   5;
  154.    creationDate              =   6;
  155.    receiveDate               =   7;
  156.    refID                     =   8;
  157.    group                     =   9;
  158.    subject                   =  10;
  159.    attributes                =  11;
  160.    comments                  =  12;
  161.    organization              =  13;
  162.    distribution              =  14;
  163.    folder                    =  15;
  164.    fidoID                    =  16;
  165.    mausID                    =  17;
  166.    replyGroup                =  18;
  167.    replyName                 =  19;
  168.    replyAddr                 =  20;
  169.    logicalToName             =  21;
  170.    logicalToAddr             =  22;
  171.    fileName                  =  23;
  172.    rfcMsgNum                 =  24;
  173.  
  174.    fidoText                  =  32;
  175.    errorText                 =  33;
  176.    newsreader                =  34;
  177.    rfcAttr                   =  35;
  178.    ftnAttr                   =  36;
  179.    zerAttr                   =  37;
  180.    mausAttr                  =  38;
  181.  
  182.    tempFileName              = 127;
  183.  
  184. (*** Errors ***)
  185.  
  186. CONST
  187.   ok                =  0;
  188.   unknown           =  1;
  189.  
  190.   noSubject         = 100;
  191.   forbiddenCode     = 101;
  192.   noWriteAccess     = 102;
  193.   noReader          = 103;
  194.   noExporter        = 104;
  195.   badLink           = 105;
  196.   noWork            = 106;
  197.   noSysop           = 107;
  198.   badChange         = 108;
  199.   groupForm         = 109;
  200.   tooBig            = 110;
  201.   notRunning        = 111;
  202.   noImportAcc       = 112;
  203.   noFromName        = 113;
  204.   noToName          = 114;
  205.   cfgLocked         = 115;
  206.   noHardlinks       = 116;
  207.  
  208.   dupe              = 200;
  209.   noReadAccess      = 201;
  210.   noViewAccess      = 202;
  211.   msgCorrupted      = 203;
  212.   noHdrSpace        = 204;
  213.   noSuchMsg         = 205;
  214.   badName           = 206;
  215.   badTag            = 207;
  216.   missingTag        = 208;
  217.   noSuchUser        = 209;
  218.   notFound          = 210;
  219.   autoBounce        = 211;
  220.   msgDeleted        = 212;
  221.   noNetAccess       = 213;
  222.   badPattern        = 214;
  223.   badVarname        = 215;
  224.   fsFull            = 216;
  225.   noMsgMem          = 217;
  226.   missingIndex      = 218;
  227.   mxTags            = 219;
  228.   userExists        = 220;
  229.   noSuchAlias       = 221;
  230.   suicide           = 222;
  231.   exeErr            = 223;
  232.  
  233.   serverTerminated  = 300;
  234.   cantWrite         = 301;
  235.   cantRead          = 302;
  236.   wrongMsgPtr       = 303;
  237.   serverNotFree     = 304;
  238.   idCountProb       = 305;
  239.   noLogin           = 306;
  240.   wrongServer       = 307;
  241.   noMem             = 308;
  242.   wrongTask         = 309;
  243.  
  244.   tcpError          = 400;
  245.  
  246.   (* tag-values *)
  247.  
  248.   typeSTRPTR        = 2000H;
  249.   typeVARPAR        = 4000H;
  250.  
  251.  
  252.   (** tags for WriteMsg() **)
  253.  
  254.   (*  add 'typeVARPAR' for ReadMsg()  *)
  255.   (*  no 'typeVARPAR' for WriteMsg()  *)
  256.  
  257.   tagMsgNum         =  1 + u.tagUser;
  258.  
  259.   tagMsgDate        =  4 + u.tagUser;
  260.                            (* don't usually use when writing!      *)
  261.                            (* Using tagMsgDate with WriteUMSMsg()  *)
  262.                            (* has a very special meaning.          *)
  263.   tagChainUp        =  7 + u.tagUser;
  264.   tagHardLink       = 14 + u.tagUser;
  265.   tagSoftLink       = 15 + u.tagUser;
  266.   tagMsgCDate       = 16 + u.tagUser;
  267.  
  268.   tagAutoBounce     = 65 + u.tagUser;
  269.                            (* when writing:                                *)
  270.                            (* data # 0: server returns error 'autoBounce', *)
  271.                            (*           but still keeps the Msg and sends  *)
  272.                            (*           it to the sysops.                  *)
  273.   tagHdrFill        = 66 + u.tagUser;
  274.                            (* when writing: how much bytes to be reserved  *)
  275.   tagTxtFill        = 67 + u.tagUser;
  276.                            (*               for header and text            *)
  277.   tagNoUpdate       = 69 + u.tagUser;
  278.                            (* data = 0: (default) set 'Old'-Flag when      *)
  279.                            (*           reading or writing                 *)
  280.                            (* data = 1: don't touch 'Old'-Flag             *)
  281.   tagHide           = 70 + u.tagUser;
  282.                            (* for writing:                                 *)
  283.                            (* data = 0: default                            *)
  284.                            (* data = 1: msg only accessible by exporters   *)
  285.                            (* data = 2: msg only accessible by users       *)
  286.   tagCheckHeader    = 71 + u.tagUser;
  287.                            (* data = 0: default                            *)
  288.                            (* data = 1: don't write msg, only check access *)
  289.  
  290.   tagMsgText        = 256 + typeSTRPTR;
  291.   tagFromName       = tagMsgText + fromName;
  292.   tagFromAddr       = tagMsgText + fromAddr;
  293.   tagToName         = tagMsgText + toName;
  294.   tagToAddr         = tagMsgText + toAddr;
  295.   tagMsgID          = tagMsgText + msgID;
  296.   tagCreationDate   = tagMsgText + creationDate;
  297.   tagReceiveDate    = tagMsgText + receiveDate;
  298.   tagRefID          = tagMsgText + refID;
  299.   tagGroup          = tagMsgText + group;
  300.   tagSubject        = tagMsgText + subject;
  301.   tagAttributes     = tagMsgText + attributes;
  302.   tagComments       = tagMsgText + comments;
  303.   tagOrganization   = tagMsgText + organization;
  304.   tagDistribution   = tagMsgText + distribution;
  305.   tagFolder         = tagMsgText + folder;
  306.   tagFidoID         = tagMsgText + fidoID;
  307.   tagMausID         = tagMsgText + mausID;
  308.   tagReplyGroup     = tagMsgText + replyGroup;
  309.   tagReplyName      = tagMsgText + replyName;
  310.   tagReplyAddr      = tagMsgText + replyAddr;
  311.   tagLogicalToName  = tagMsgText + logicalToName;
  312.   tagLogicalToAddr  = tagMsgText + logicalToAddr;
  313.   tagFileName       = tagMsgText + fileName;
  314.   tagRFCMsgNum      = tagMsgText + rfcMsgNum;
  315.  
  316.   tagFidoText       = tagMsgText + fidoText;
  317.   tagErrorText      = tagMsgText + errorText;
  318.   tagNewsreader     = tagMsgText + newsreader;
  319.   tagRfcAttr        = tagMsgText + rfcAttr;
  320.   tagFtnAttr        = tagMsgText + ftnAttr;
  321.   tagZerAttr        = tagMsgText + zerAttr;
  322.   tagMausAttr       = tagMsgText + mausAttr;
  323.  
  324.   tagTempFileName   = tagMsgText + tempFileName;
  325.   tagTextFields     = 513 + u.tagUser;
  326.                             (* datatype: POINTER TO MsgTextFields *)
  327.  
  328.  
  329.   (** tags for ReadMsg() **)
  330.  
  331.   (*  add 'typeVARPAR' for ReadMsg()  *)
  332.   (*  no 'typeVARPAR' for WriteMsg()  *)
  333.  
  334.   tagRMsgNum        =  1 + u.tagUser;
  335.  
  336.   tagRHdrLength     =  2 + u.tagUser + typeVARPAR;
  337.   tagRTxtLength     =  3 + u.tagUser + typeVARPAR;
  338.   tagRMsgDate       =  4 + u.tagUser + typeVARPAR;
  339.   tagRChainUp       =  7 + u.tagUser + typeVARPAR;
  340.   tagRChainDn       =  8 + u.tagUser + typeVARPAR;
  341.   tagRChainLt       =  9 + u.tagUser + typeVARPAR;
  342.   tagRChainRt       = 10 + u.tagUser + typeVARPAR;
  343.   tagRGlobalFlags   = 11 + u.tagUser + typeVARPAR;
  344.   tagRUserFlags     = 12 + u.tagUser + typeVARPAR;
  345.   tagRLoginFlags    = 13 + u.tagUser + typeVARPAR;
  346.   tagRHardLink      = 14 + u.tagUser + typeVARPAR;
  347.   tagRSoftLink      = 15 + u.tagUser + typeVARPAR;
  348.   tagRMsgCDate      = 16 + u.tagUser + typeVARPAR;
  349.  
  350.   tagRDateStyle     = 64 + u.tagUser;
  351.                            (*  style for receiveDate when reading:         *)
  352.                            (* data = 0: no receiveDate                     *)
  353.                            (* data = 1: emulate old-style receiveDate      *)
  354.   tagRIDStyle       = 68 + u.tagUser;
  355.                            (* style for Message-ID                         *)
  356.                            (* data = 0: real Message-ID                    *)
  357.                            (* data = 1: old style dec-number               *)
  358.   tagRNoUpdate      = 69 + u.tagUser;
  359.                            (* data = 0: (default) set 'Old'-Flag when      *)
  360.                            (*           reading or writing                 *)
  361.                            (* data = 1: don't touch 'Old'-Flag             *)
  362.  
  363.   tagRMsgText        =  256 + typeSTRPTR + typeVARPAR + u.tagUser;
  364.   tagRFromName       = tagRMsgText + fromName;
  365.   tagRFromAddr       = tagRMsgText + fromAddr;
  366.   tagRToName         = tagRMsgText + toName;
  367.   tagRToAddr         = tagRMsgText + toAddr;
  368.   tagRMsgID          = tagRMsgText + msgID;
  369.   tagRCreationDate   = tagRMsgText + creationDate;
  370.   tagRReceiveDate    = tagRMsgText + receiveDate;
  371.   tagRRefID          = tagRMsgText + refID;
  372.   tagRGroup          = tagRMsgText + group;
  373.   tagRSubject        = tagRMsgText + subject;
  374.   tagRAttributes     = tagRMsgText + attributes;
  375.   tagRComments       = tagRMsgText + comments;
  376.   tagROrganization   = tagRMsgText + organization;
  377.   tagRDistribution   = tagRMsgText + distribution;
  378.   tagRFolder         = tagRMsgText + folder;
  379.   tagRFidoID         = tagRMsgText + fidoID;
  380.   tagRMausID         = tagRMsgText + mausID;
  381.   tagRReplyGroup     = tagRMsgText + replyGroup;
  382.   tagRReplyName      = tagRMsgText + replyName;
  383.   tagRReplyAddr      = tagRMsgText + replyAddr;
  384.   tagRLogicalToName  = tagRMsgText + logicalToName;
  385.   tagRLogicalToAddr  = tagRMsgText + logicalToAddr;
  386.   tagRFileName       = tagRMsgText + fileName;
  387.   tagRRFCMsgNum      = tagRMsgText + rfcMsgNum;
  388.  
  389.   tagRFidoText       = tagRMsgText + fidoText;
  390.   tagRErrorText      = tagRMsgText + errorText;
  391.   tagRNewsreader     = tagRMsgText + newsreader;
  392.  
  393.   tagRRfcAttr        = tagRMsgText + rfcAttr;
  394.   tagRFtnAttr        = tagRMsgText + ftnAttr;
  395.   tagRZerAttr        = tagRMsgText + zerAttr;
  396.   tagRMausAttr       = tagRMsgText + mausAttr;
  397.  
  398.   tagRTempFileName   = tagRMsgText + tempFileName;
  399.  
  400.   tagRMsgInfo        = 512 + u.tagUser;
  401.                              (* datatype: POINTER TO MessageInfo *)
  402.   tagRTextFields     = tagRMsgInfo + 1;
  403.                              (* datatype: POINTER TO MsgTextFields *)
  404.  
  405.   tagRReadHeader     = tagRMsgInfo + 2;
  406.                              (* read all header-fields *)
  407.   tagRReadAll        = tagRMsgInfo + 3;
  408.                              (* read all text-fields *)
  409.   tagRExtMsgInfo     = tagRMsgInfo + 4;
  410.                              (* read extended MessageInfo*)
  411.  
  412.  
  413.  
  414.   (** tags for Select()  **)
  415.  
  416.   tagSelSet         = 1024 + u.tagUser;
  417.                              (* flags to set on selected msgs *)
  418.   tagSelUnset       = tagSelSet +  1;
  419.                              (* flags to clear *)
  420.   tagSelWriteGlobal = tagSelSet +  2;
  421.                              (* change global flags, not user-flags *)
  422.   tagSelWriteLocal  = tagSelSet +  3;
  423.                             (* change login-local flags, not user-flags *)
  424.   tagSelWriteUser   = tagSelSet +  4+typeSTRPTR;
  425.                             (* change other user's flags *)
  426.  
  427.   tagSelStart       = tagSelSet +  8;
  428.                             (* process only msgs AFTER this one *)
  429.   tagSelStop        = tagSelSet + 9;
  430.                             (* process only msgs BEFORE this one *)
  431.  
  432.   (* the following are mutual-exclusiv *)
  433.   (*   use only one of the following operations,   *)
  434.   (*   otherwise unpredictable things may happen!  *)
  435.  
  436.   tagSelReadGlobal  = tagSelSet + 10;
  437.                             (* examine global flags, not user-flags *)
  438.   tagSelReadLocal   = tagSelSet + 11;
  439.                             (* examine login-local flags, not user-flags *)
  440.   tagSelReadUser    = tagSelSet + 12+typeSTRPTR;
  441.                             (* examine other user's flags *)
  442.   tagSelMask        = tagSelSet + 16;
  443.                             (* select msgs, that's flags    *)
  444.   tagSelMatch       = tagSelSet + 17;
  445.                             (*   ANDed with mask equal match *)
  446.   tagSelParent      = tagSelSet + 18;
  447.                             (* examine parent's flags *)
  448.  
  449.   tagSelDate        = tagSelSet + 19;
  450.                             (* select msgs younger than this date *)
  451.  
  452.   tagSelTree        = tagSelSet + 20;
  453.                             (* select whole tree this msg is in *)
  454.  
  455.   tagSelSubTree     = tagSelSet + 21;
  456.                             (* select sub-tree this msg is root of *)
  457.  
  458.   tagSelMsg         = tagSelSet + 22;
  459.                             (* select a msg specified by number *)
  460.  
  461.   tagSelQuick       = tagSelSet + 23;
  462.                             (* quick select enabled *)
  463.   tagSelLink        = tagSelSet + 24;
  464.                             (* 0: don't select links *)
  465.                             (* 1: also select hard links *)
  466.  
  467.   tagSelCDate       = tagSelSet + 25;
  468.                             (* select msgs younger than this cDate *)
  469.  
  470.   tagSelSize        = tagSelSet + 26;
  471.                             (* select msgs with more bytes *)
  472.  
  473.   (* more modifiers for status-selects *)
  474.  
  475.   tagSelMaxCount       = tagSelSet + 27;
  476.                                  (* select at most N msgs *)
  477.                                  (* (backwards)           *)
  478.   tagSelMaxSize        = tagSelSet + 28;
  479.                                  (* sum up msgs' sizes and stop    *)
  480.                                  (* before the sum exceeds N bytes *)
  481.                                  (* (backwards)                    *)
  482.  
  483.  
  484.   (** tags for Search() **)
  485.  
  486.   tagSearchLast         = 2048 + u.tagUser;
  487.                              (* number of LAST msg not to search *)
  488.   tagSearchQuick        = tagSearchLast+ 1;
  489.                              (* quick searches enabled *)
  490.  
  491.   tagSearchGlobal       = tagSearchLast+ 2;
  492.                              (* examine global flags instead of user-flags*)
  493.   tagSearchLocal        = tagSearchLast+ 3;
  494.                              (* examine login-local flags, not user-flags *)
  495.   tagSearchUser         = tagSearchLast+ 4+typeSTRPTR;
  496.                              (* examine other user's flags *)
  497.   tagSearchDirection    = tagSearchLast+ 5;
  498.                              (* set search direction *)
  499.                              (*  0 = default  *)
  500.                              (*  1 = forward  *)
  501.                              (* -1 = backward *)
  502.   tagSearchPattern      = tagSearchLast + 6;
  503.                              (* string in tagMsgText .. tagMsgText+127 is: *)
  504.                              (* 0: no pattern, just a plain string    *)
  505.                              (* 1: an AmigaDOS style pattern          *)
  506.                              (* 2: a pattern, only if it contains     *)
  507.                              (*    wildcards ('auto-detect patterns') *)
  508.  
  509.   tagSearchMask         = tagSearchLast+16;
  510.                              (* search a msg, that's flags   *)
  511.   tagSearchMatch        = tagSearchLast+17;
  512.                              (*   ANDed with mask equal match *)
  513.  
  514.   (* tagMsgText .. tagMsgText+127 are also allowed for searching *)
  515.  
  516.  
  517.   (**  tags for ReadConfig(), WriteConfig()  **)
  518.  
  519.   tagCfgGlobalOnly      = 3072 + u.tagUser;
  520.                              (* read or write only global config,         *)
  521.                              (* thus must not be combined with tagCfgUser *)
  522.   tagCfgName            = tagCfgGlobalOnly+ 1 + typeSTRPTR;
  523.                              (* name of config var to read or write       *)
  524.   tagCfgUser            = tagCfgGlobalOnly+ 2 + typeSTRPTR;
  525.                              (* name of user to read/write locals from/to *)
  526.  
  527.  
  528.   (**  tags for ReadConfig()  **)
  529.  
  530.   tagCfgUserName        = tagCfgGlobalOnly+ 3 + typeSTRPTR;
  531.                              (* alias to get realname from                *)
  532.   tagCfgNextVar         = tagCfgGlobalOnly+ 4 + typeSTRPTR;
  533.                              (* get name of next var                      *)
  534.   tagCfgNextAlias       = tagCfgGlobalOnly+ 5 + typeSTRPTR;
  535.                              (* get name of next Alias                    *)
  536.   tagCfgNextUser        = tagCfgGlobalOnly+ 6 + typeSTRPTR;
  537.                              (* get name of next User                     *)
  538.   tagCfgNextExporter    = tagCfgGlobalOnly+ 7 + typeSTRPTR;
  539.                              (* get name of next Exporter                 *)
  540.   tagCfgNextGroup       = tagCfgGlobalOnly+ 8 + typeSTRPTR;
  541.                              (* get name of next Netgroup                 *)
  542.   tagCfgNextGroupMember = tagCfgGlobalOnly+ 9 + typeSTRPTR;
  543.                              (* get name of next Groupmember              *)
  544.   tagCfgLockVar         = tagCfgGlobalOnly+10;
  545.                              (* 0: no locking                             *)
  546.                              (* 1: lock and read config var               *)
  547.  
  548.   (**  tags for ReadConfig(), WriteConfig()  **)
  549.  
  550.   tagCfgQuoted          = tagCfgGlobalOnly +11;
  551.                              (* 0: no quoting                             *)
  552.                              (* 1: read/write var in quoted format        *)
  553.                              (*    (as used in "ums.config")              *)
  554.  
  555.   (**  tags for WriteConfig()  **)
  556.  
  557.   tagCfgDump            = tagCfgGlobalOnly+16 + typeSTRPTR;
  558.                              (* write current settings to a file *)
  559.   tagCfgData            = tagCfgGlobalOnly+17 + typeSTRPTR;
  560.                              (* data to write to specified var   *)
  561.   tagCfgCreateUser      = tagCfgGlobalOnly+18 + typeSTRPTR;
  562.                              (* create new User                  *)
  563.   tagCfgDeleteUser      = tagCfgGlobalOnly+19 + typeSTRPTR;
  564.                              (* delete user                      *)
  565.   tagCfgCreateAlias     = tagCfgGlobalOnly+20 + typeSTRPTR;
  566.                              (* create new alias                 *)
  567.   tagCfgDeleteAlias     = tagCfgGlobalOnly+21 + typeSTRPTR;
  568.                              (* delete alias                     *)
  569.   tagCfgNetGroup        = tagCfgGlobalOnly+22 + typeSTRPTR;
  570.                              (* create a netgroup                *)
  571.   tagCfgAddNetGroup     = tagCfgGlobalOnly+23 + typeSTRPTR;
  572.                              (* create/add netgroups             *)
  573.   tagCfgDeleteNetGroup  = tagCfgGlobalOnly+24 + typeSTRPTR;
  574.                              (* remove a group from a netgroup   *)
  575.   tagCfgUnlockVar       = tagCfgGlobalOnly+25;
  576.                               (* 0: no locking                   *)
  577.                               (* 1: unlock and write config var  *)
  578.                               (* 2: unlock but don't write       *)
  579.   tagCfgLocal           = tagCfgGlobalOnly + 26;
  580.                               (* create/delete login-local variable *)
  581.   tagCfgCreateSysop     = tagCfgGlobalOnly + 27 + typeSTRPTR;
  582.                               (* create a new sysop               *)
  583.   tagCfgCreateExporter  = tagCfgGlobalOnly + 28 + typeSTRPTR;
  584.                               (* create a new exporter            *)
  585.  
  586.   (**  tags for MatchConfig()  **)
  587.  
  588.   tagMatchGlobalOnly    = 4096 + u.tagUser;
  589.   tagMatchVarname       = tagMatchGlobalOnly+ 1 + typeSTRPTR;
  590.   tagMatchUser          = tagMatchGlobalOnly+ 2 + typeSTRPTR;
  591.   tagMatchString        = tagMatchGlobalOnly+ 3 + typeSTRPTR;
  592.   tagMatchDefault       = tagMatchGlobalOnly+ 4;
  593.  
  594. END UmsD.Lib11
  595.